/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.ufpb.halloc.comunicacao;

import br.com.ufpb.halloc.dados.ProjetoDAOFactory;
import br.com.ufpb.halloc.dados.ProjetoDAOPostgreSQL;
import br.com.ufpb.halloc.exceptions.ArquivoBinInexistenteException;
import br.com.ufpb.halloc.exceptions.ProjetoVazioException;
import br.com.ufpb.halloc.negocio.Projeto;
import java.util.List;

/**
 *
 * @author kawe
 */
public class ControleProjeto {
 
    
    private ProjetoDAOFactory daoProjetoFactory;
    private ProjetoDAOPostgreSQL projetoDAOBanco;
    
    private static ControleProjeto controleProjeto;
    
    
    public static ControleProjeto getInstance(){
        
        if(controleProjeto != null){
            return controleProjeto;
        }else{
            return new ControleProjeto();
        }
        
    }
    
    public ControleProjeto(){
        this.daoProjetoFactory = ProjetoDAOFactory.getInstanceProjetoDAOFactory(1);
        this.projetoDAOBanco = ProjetoDAOPostgreSQL.getInstance();
    }
    
    public void inserir(Projeto projeto) throws ProjetoVazioException{
        projetoDAOBanco.inserir(projeto);        
    }
    
    public void salvarProjetos(){
                
    }
    
    public void remover(Projeto projeto){
        projetoDAOBanco.remover(projeto);
    }
    
    public void removerPorID(String id){
        this.projetoDAOBanco.removerPorId(id);
    }
    public Projeto pesquisarId(String id){
        return projetoDAOBanco.pesquisarID(id);                
    } 
    
    public List<Projeto> pesquisarNome(String nome){
        return projetoDAOBanco.pesquisar(nome);
    }
    
    
    public void atualizar(Projeto p){
        projetoDAOBanco.atualizar(p);
    }
    
    public List<Projeto> getProjetos(){
        return this.projetoDAOBanco.getProjetos();
    }
    
    public void recuperar(){
        
    }
    
    public void criarArquivo() throws ArquivoBinInexistenteException{
        
    }
    
    public int getQuantidadeDeProjetos(String matricula){
        return this.projetoDAOBanco.getQuantidadeDeProjetos(matricula);
    }
}
